/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package it.unitn.science.matr155863_148346_145963.bccastestore.utils;


import it.unitn.science.matr155863_148346_145963.bccastestore.items.Asta;
import it.unitn.science.matr155863_148346_145963.bccastestore.items.User;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author Luca
 */
public class CreateFileExcel {
/**
* @param args the command line arguments
* @throws Exception
*/
    public static void generaXls(String[] args,List<Asta> aste,
            /*String path*/ OutputStream out ) throws Exception {
        Workbook workbook = null;
        String name = null;
            
        if (args.length > 0) {      // scrivo un file xls 2003, istanzio un HSSFWorkbook
            workbook = new HSSFWorkbook();
            name = "Resoconto_aste.xls";
        } else {
                // se devo scrivere un XLSX 2007-2010 basta solo istanziare un XSSFWorkbook,il resto è tutto uguale
                //
                //workbook = new XSSFWorkbook();
                //name = "workbook.xlsx";
        }
 
        CreationHelper createHelper = workbook.getCreationHelper();
        Sheet sheet = workbook.createSheet("Tabella aste");
        for(int i =0; i<8; i++){
                        sheet.setColumnWidth(i, 6000);
           }
                
        Row row0 = sheet.createRow(0);
        Row row1 = sheet.createRow(1);
        Row rowasta=null;
        
        
    
    
        
        //stile celle del titolo
        CellStyle cellStyle1 = workbook.createCellStyle();
			cellStyle1.setFillForegroundColor(HSSFColor.GOLD.index);
			cellStyle1.setWrapText(true);
                        // stile/colorazione bordi
                        cellStyle1.setBorderBottom(CellStyle.BORDER_THIN);
                        cellStyle1.setBottomBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle1.setBorderLeft(CellStyle.BORDER_THIN);
                        cellStyle1.setLeftBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle1.setBorderRight(CellStyle.BORDER_THIN);
                        cellStyle1.setRightBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle1.setBorderTop(CellStyle.BORDER_THIN);
                        cellStyle1.setTopBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                        
            
     //stile celle inserimento   
        CellStyle cellStyle2 = workbook.createCellStyle();
                           cellStyle2.setFillForegroundColor(HSSFColor.WHITE.index);
			   cellStyle2.setWrapText(true);
                           // stile/colorazione bordi
                        cellStyle2.setBorderBottom(CellStyle.BORDER_THIN);
                        cellStyle2.setBottomBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle2.setBorderLeft(CellStyle.BORDER_THIN);
                        cellStyle2.setLeftBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle2.setBorderRight(CellStyle.BORDER_THIN);
                        cellStyle2.setRightBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle2.setBorderTop(CellStyle.BORDER_THIN);
                        cellStyle2.setTopBorderColor(IndexedColors.BLACK.getIndex());
                        cellStyle2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        
        
        
        
        
        
    int i=2;    
        
    for(Asta asta:aste){   
       
    
        rowasta = sheet.createRow(i);        
    
    
        //dichiarazione celle: 
        //titolo
        row0.createCell(0).setCellValue(createHelper.createRichTextString("Table with all the aste for Admin"));
        //intestazione
        Cell celltitolo10 = row1.createCell(0);
        Cell celltitolo11 = row1.createCell(1);
    Cell celltitolo12 = row1.createCell(2);
    Cell celltitolo13 = row1.createCell(3);
    Cell celltitolo14 = row1.createCell(4);
    Cell celltitolo15 = row1.createCell(5);
    Cell celltitolo16 = row1.createCell(6);
    Cell celltitolo17 = row1.createCell(7);
   
    // celle con Titoli riga 1
    celltitolo10.setCellValue("Seller User-Name");
    celltitolo11.setCellValue("Buyer First Name");
    celltitolo12.setCellValue("Buyer Second Name");
    celltitolo13.setCellValue("Product Name");
    celltitolo14.setCellValue("Date and Time");
    celltitolo15.setCellValue("Price Product (euro)");
    celltitolo16.setCellValue("Consignment (euro)");
    celltitolo17.setCellValue("Total Price (euro)");
        
    //set stile-cella
    celltitolo10.setCellStyle(cellStyle1);
    celltitolo11.setCellStyle(cellStyle1);
    celltitolo12.setCellStyle(cellStyle1);
    celltitolo13.setCellStyle(cellStyle1);
    celltitolo14.setCellStyle(cellStyle1);
    celltitolo15.setCellStyle(cellStyle1);
    celltitolo16.setCellStyle(cellStyle1);
    celltitolo17.setCellStyle(cellStyle1);
    
    
                        
    //calcolo commissione
     double commissioni= ((asta.getLast_offer_price()*1.25)/100);
     double prezzo_tot;
     
     if(commissioni >= 0.5){
        prezzo_tot = asta.getLast_offer_price() + 1.0;
     }else{
        prezzo_tot = asta.getLast_offer_price();
     }
                        
    //riga inserimento dati:
    //nome seller user-name
    Cell celltitolo20 = rowasta.createCell(0);
    celltitolo20.setCellValue(asta.getProduct().getSellerName());
    celltitolo20.setCellStyle(cellStyle2);
    
    //nome buyer first name
    Cell celltitolo21 = rowasta.createCell(1);
    celltitolo21.setCellValue(asta.getBuyer().getFirst_name());
    celltitolo21.setCellStyle(cellStyle2);
        
    //name buyer second name
    Cell celltitolo22 = rowasta.createCell(2);
    celltitolo22.setCellValue(""+asta.getBuyer().getLast_name());
    celltitolo22.setCellStyle(cellStyle2);
    
    //name product
    Cell celltitolo23 = rowasta.createCell(3);
    celltitolo23.setCellValue(""+asta.getProduct().getName());
    celltitolo23.setCellStyle(cellStyle2);
    
    // cella con data
    Cell celltitolo24 = rowasta.createCell(4);
    celltitolo24.setCellValue(""+asta.getDate());
    celltitolo24.setCellStyle(cellStyle2);
    
         
    // cella price product
    Cell celltitolo25 = rowasta.createCell(5);
    celltitolo25.setCellType(Cell.CELL_TYPE_NUMERIC);
    celltitolo25.setCellValue(asta.getLast_offer_price());
    celltitolo25.setCellStyle(cellStyle2);
    
    
    //cella commissione
    Cell celltitolo26 = rowasta.createCell(6);
    celltitolo26.setCellType(Cell.CELL_TYPE_NUMERIC);
    celltitolo26.setCellValue(commissioni);
    celltitolo26.setCellStyle(cellStyle2);
    
    //cella prezzo totale
    Cell celltitolo27 = rowasta.createCell(7);
    celltitolo27.setCellType(Cell.CELL_TYPE_NUMERIC);
    celltitolo27.setCellValue(prezzo_tot);
    celltitolo27.setCellStyle(cellStyle2);
    
    i++;
    
     }
    
    //Inserisco il file Excel nella cartella NetBeansProjects\trunk\build\web\tmp
    //final FileOutputStream out = new FileOutputStream(path+"/tmp/"+name);
    try {
        // salvo il workbook su file
        workbook.write(out);
        
        } finally {
            out.close();
           }
    
    
    
    //public static void main(String[] args) throws Exception {
    // test con XLS
    //generaXls(new String[] {"xls"},null);
    //System.out.println("resoconto_aste.xls");
    
    // test con XLSX
    //realmain(new String[0]);
    //System.out.println("scritto file workbook.xlsx");
    
    // per leggere i file, basta istanziare un HSSFWorkbook o un XSSFWorkbook con il FileInputStream
    // del file da leggere

    //}

    
  }
}